Electronic circuits, such as integrated circuits, are used in a variety of products, from automobiles to microwaves to personal computers. Designing and fabricating these circuit devices typically involves many steps, known as a “design flow.” The particular steps of a design flow often are dependent upon the type of integrated circuit being designed, its complexity, the design team, and the integrated circuit fabricator or foundry that will manufacture the circuit. Typically, software and hardware “tools” will verify a design at various stages of the design flow by running software simulators and/or hardware emulators, and errors in the design are corrected.
Several steps are common to most design flows. Typically, the specification for the new circuit initially is described at a very abstract level as a logical design. An example of this type of abstract description is a register transfer level (RTL) description of the circuit. With this type of description, the circuit is defined in terms of both the exchange of signals between hardware registers and the logical operations that are performed on those signals. A register transfer level design typically employs a Hardware Design Language (HDL), such as the Very high speed integrated circuit Hardware Design Language (VHDL) or the Verilog language. The logic of the circuit is then analyzed, to confirm that the logic incorporated into the design will accurately perform the functions desired for the circuit. This analysis is sometimes referred to as “functional verification.”
In some instances, the functionality of the circuit design will be verified by simulating the operation of the design using software. Some designs may be too large or complex to efficiently simulate using software, however. Instead, the functionality of the circuit design will be verified by emulating the circuit design using a hardware emulator. Examples of hardware emulators include, for example, the VELOCE family of emulators available from Mentor Graphics Corporation of Wilsonville, Oreg., the ZEBU family of emulators available from EVE SA of Palaiseau, France, and the PALLADIUM family of emulators available from Cadence Design Systems of San Jose, Calif. An emulator typically will provide a set of primitive components for emulating the operation of a circuit design. For example, emulators, some of which may use conventional field-programmable gate array circuits, emulate the functionality of a circuit design using a combination of state elements, memories and lookup tables. Of course, other types of emulators may provide additional or alternate primitive components. For example, alternatively, an emulator may function by using combinatorial elements computing a selectable function over a fixed number of inputs.
As those of skill in the art will appreciate, many modern electronic circuits are designed to communicate with peripheral devices through various communication interfaces, often referred to as “busses” using various communication protocols. Examples of communication protocols include the I2C bus protocol, the C-Bus protocol, and the Serial bus protocol. Accordingly, in order to properly verify the functionality of some circuit designs using an emulator, it is often necessary to connect the emulator to a computer system to test the functionality of an emulated bus.
With some communication protocols, there is a specific time limit in which data must be made available on the bus. If the expected data is not available within the specific time period, then the communication utilizing the protocol may fail. Accordingly, communication between the emulator and the computer needs to be implemented in such a way that the emulated portions of the circuit design communicating with the computer can meet these time constraints. Adding to the complexity of meeting time constraints is the fact that it is often necessary to configure portions of the emulator with data from the computer. Furthermore, it is often necessary to generate a record of what is happening during the emulation and then “log” the record to the computer.